package org.example.manager;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.example.model.TrafficDO;

import java.util.List;

/**
 * @description:
 * @author: 谢超
 * @date: 2024/9/3 9:52
 */
public interface TrafficManager {
    /**
     * 新增流量
     * @param trafficDO
     * @return
     */
    int add(TrafficDO trafficDO);

    /**
     * 分页查询可用流量
     * @param page
     * @param size
     * @param accountNo
     * @return
     */
    IPage<TrafficDO> pageAvailable(int page, int size, long accountNo);

    /**
     * 查找详情
     * @param trafficId
     * @param accountNo
     * @return
     */
    TrafficDO findByIdAndAccountNo(Long trafficId, long accountNo);

    /**
     * 删除过期流量包
     * @return
     */
    boolean deleteExpireTraffic();

    /**
     * 查找所有可用的短链流量包列表(未过期),包括免费流量包
     * @param accountNo
     * @return
     */
    List<TrafficDO> selectAvailableTraffics(Long accountNo);

    /**
     * 给某个流量包增加使⽤次数
     * @param trafficId
     * @param accountNo
     * @param usedTimes
     * @return
     */
    int addDayUsedTimes(Long accountNo, Long trafficId, Integer usedTimes) ;

    /**
     * 恢复流量包使⽤当天次数，回滚流量包
     * @param accountNo
     * @param trafficId
     * @param usedTimes
     */
    int releaseUsedTimes(Long accountNo, Long trafficId, Integer usedTimes, String userDateStr);

    /**
     * 批量更新流量包使⽤次数为0
     * @param accountNo
     * @param unUpdatedTrafficIds
     */
    int batchUpdateUsedTimes(Long accountNo, List<Long> unUpdatedTrafficIds);
}
